
namespace SIP.PN.Modelo.Entidades
{
    public abstract class Concepto
    {
        #region Propiedades Publicas

        private string codigo;
        private TipoDeProyecto tipoDeProyecto;
        private string nombre;
        private string descripcion;
        private string tipo;

        #endregion

        #region Propiedades Publicas

        public virtual string Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }

        public virtual TipoDeProyecto TipoDeProyecto
        {
            get { return tipoDeProyecto; }
            set { tipoDeProyecto = value; }
        }

        public virtual string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public virtual string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }

        public virtual string Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }

        #endregion

        #region Metodos

        public virtual bool EsDeTarea()
        {
            return false;
        }

        public virtual bool EsDeOperario()
        {
            return false;
        }

        #endregion

        #region Metodos Sobreescritos

        public override bool Equals(object obj)
        {
            Concepto otro = obj as Concepto;
            if (otro == null)
                return false;
            return Codigo.Equals(otro.Codigo);
        }

        public override int GetHashCode()
        {
            return ToString().GetHashCode();
        }

        public override string ToString()
        {
            return string.Format("{0}-{1}", GetType(), Codigo);
        }

        #endregion
    }
}
